package com.kantboot.user.account.service;

import com.kantboot.user.account.domain.dto.UserAccountSendVerificationCodeDTO;
import com.kantboot.user.account.domain.vo.LoginVO;

public interface IUserAccountLoginService {

    /**
     * 根据用户名和密码登录
     * @param username 用户名
     * @param password 密码
     * @return 登录信息
     */
    LoginVO loginByUsernameAndPassword(String username, String password);

    /**
     * 发送登录验证码
     * @param sendVerificationCodeDTO 发送验证码的DTO
     */
    void sendLoginVerificationCode(UserAccountSendVerificationCodeDTO sendVerificationCodeDTO);

    /**
     * 根据手机、验证码登录
     * @param phone 手机号
     * @param verificationCode 验证码
     * @return 登录信息
     */
    LoginVO loginByPhoneAndVerificationCode(String phoneAreaCode, String phone, String verificationCode);

    /**
     * 根据邮箱、验证码登录
     * @param email 邮箱
     * @param verificationCode 验证码
     * @return 登录信息
     */
    LoginVO loginByEmailAndVerificationCode(String email, String verificationCode);

    /**
     * 根据手机号、密码登录
     * @param phone 手机号
     * @param password 密码
     * @return 登录信息
     */
    LoginVO loginByPhoneAndPassword(String phoneAreaCode, String phone, String password);

    /**
     * 根据邮箱、密码登录
     * @param email 邮箱
     * @param password 密码
     * @return 登录信息
     */
    LoginVO loginByEmailAndPassword(String email, String password);

    /**
     * 退出登录
     */
    void logout();

}
